package tech.aistar.day09.homework01;

import java.util.Scanner;

/**
 * 本类用来演示: 条形码
 *
 * @author: success
 * @date: 2021/3/19 8:37 上午
 */
public class BarCodeDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入条形码>");
        String bar = sc.nextLine();

        test(bar);
    }

    private static void test(String bar) {
        if(bar== null || bar.trim().length()==0){
            System.out.println("条形码不合法");
            return;
        }
        //690123456789x
        //第一种方法 - 直接操作String
        //1. 求出偶数位之和
        int even = 0;
        for (int i = 1; i <= bar.length()-2 ; i+=2) {
            //运用了char类型计算的特点 - ascill码进行计算
            even+=(bar.charAt(i)-'0');
        }
        //System.out.println(even);
        //第二步
        even*=3;//102

        //3. 求出奇数位之和
        int odd = 0;
        for (int i = 0; i <= bar.length()-3 ; i+=2) {
            //运用了字符串/包装类型的api
            //charAt(i) -> char类型 -> String类型 -> Integer类型
            odd+=Integer.valueOf(String.valueOf(bar.charAt(i)));
        }
        int result = even+odd;//128
        //System.out.println(result);

        //被减数 -> 1. 大于或者等于result
        //         2. 应该是10的整数倍,离result最近

        //真正的合法产品的校验值
        int check = 0;

        if(result%10!=0){
            //重新计算一下check的值
            check = 10-result%10;

           // check = result/10*10+10 - result;
        }

        //拿这个校验值和x进行比较
//        if(check == (bar.charAt(bar.length()-1)-'0')){
//            System.out.println("校验值:"+check+",是合法的!");
//        }else{
//            System.out.println("校验值:"+check+",是不合法的!");
//        }
        if(check == Integer.parseInt(String.valueOf(bar.charAt(bar.length()-1)))){
            System.out.println("校验值:"+check+",是合法的!");
        }else{
            System.out.println("校验值:"+check+",是不合法的!");
        }
        //6956367338680
    }
}
